package cn.itsource.basic.service;


import cn.itsource.basic.domain.BaseDomain;
import cn.itsource.basic.query.BaseQuery;
import cn.itsource.basic.query.PageList;
import cn.itsource.org.domain.Department;
import cn.itsource.org.query.DepartmentQuery;

/**
 *   全局公共的业务层
 *
 *   T extends BaseDomain:   此处要求传入IBaseService的类型必须的BaseDomain的子类
 *
 *
 *      T:  用来表示传入类的类型
 *      K:  表示  Key-value  类型数据的key值              Map<K,V> map = new hashMap();
 *      V:  表示  Key-value  类型数据的value值
 *      E:  表示element的意思                      List<E> list = new ArrayList();
 *      ?:  表示通配
 *
 */
public interface IBaseService<T extends BaseDomain,Q extends BaseQuery> {

    /**
     * 分页查询
     * @return
     */
    PageList<T> getAllByPage(Q q);

    /**
     * 删除操作
     */
    void delete(Long id);

    /**
     * 新增或修改操作
     */
    void saveOrUpdate(T t);
}
